//
//  Pthread_mutexLockDemo.m
//  JKThreadTest
//
//  Created by 王冲 on 2018/10/24.
//  Copyright © 2018年 JK科技有限公司. All rights reserved.
//

#import "Pthread_mutexLockDemo.h"

#import <pthread.h>

@interface Pthread_mutexLockDemo ()

@property(nonatomic,assign) pthread_mutex_t ticketMutex;
@property(nonatomic,assign) pthread_mutex_t moneyMutexk;

@end

@implementation Pthread_mutexLockDemo

- (void)__initMutex:(pthread_mutex_t *)mutex
{
    // 静态初始化
    //        pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    
    //    // 初始化属性
    //    pthread_mutexattr_t attr;
    //    pthread_mutexattr_init(&attr);
    //    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_DEFAULT);
    //    // 初始化锁
    //    pthread_mutex_init(mutex, &attr);
    //    // 销毁属性
    //    pthread_mutexattr_destroy(&attr);
    
    // 初始化属性
    //    pthread_mutexattr_t attr;
    //    pthread_mutexattr_init(&attr);
    //    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_DEFAULT);
    // 初始化锁
    pthread_mutex_init(mutex, NULL);
    // 销毁属性
    //    pthread_mutexattr_destroy(&attr);
}

-(instancetype)init{
    
    if (self = [super init]) {
        
        // 初始化锁
        // 买票的锁
        [self __initMutex:&_ticketMutex];
        [self __initMutex:&_moneyMutexk];
    }
    
    return self;
}

-(void)__buyTicket{
    
    // 加锁
    pthread_mutex_lock(&_ticketMutex);
    
    [super __buyTicket];
    
    // 解锁
    pthread_mutex_unlock(&_ticketMutex);
    
}

-(void)__drawMoney{
    
    pthread_mutex_lock(&_moneyMutexk);
    
    [super __drawMoney];
    
    pthread_mutex_unlock(&_moneyMutexk);
}

-(void)__saveMoney{
    
    pthread_mutex_lock(&_moneyMutexk);
    
    [super __saveMoney];
    
    pthread_mutex_unlock(&_moneyMutexk);
}


- (void)dealloc
{
    pthread_mutex_destroy(&_ticketMutex);
    pthread_mutex_destroy(&_moneyMutexk);
}


@end
